<?php
class Arm_Form_Element_Abstract extends Zend_Form_Element{
    protected   $view           = null;
    public      $viewScriptPath = null;
    public      $viewScript     = null;
    public      $translate      = null;
    public      $highlight      = False;

    public function __construct($spec, $options = null){
        $this->translate        = Zend_Registry::get('Zend_Translate');
        $this->view             = new Zend_View();
        $this->viewScriptPath   = APPLICATION_PATH . '/../library/Arm/views/forms/elements';
        $this->viewScript       = 'default.phtml';

        parent::__construct($spec, $options = null);
    }

    /* @paran $bool Boolean
    */
    public function setHighlight($bool){
        $this->highlight = $bool;
    }

    /**
     *  Seta o path do arquivo de view.
     */
    public function setPath($filePath, $fileName = Null){
        $path                   = pathinfo($filePath);

        $this->viewScriptPath   = dirname($path['dirname']) . '/../views/forms/elements';
        $this->viewScript       = is_null($fileName) ? strtolower($path['filename']) : $fileName;
        $this->viewScript       = $this->viewScript . '.phtml';
    }

    /**
     *  Método que será executado antes da renderização do campo.
     *  Não faz nada nesta classe porque é um método para ser sobrescrito,
     *  se necessário.
     */
    public function beforeRender(){}

    public function render(Zend_View_Interface $view = null){
        ### Tarefas pré-renderização

        ### Variáveis da view
        $this->view->translate  = $this->translate;
        $this->view->element    = $this;
        $this->view->highlight  = $this->highlight;

        ### Renderização da view
        $this->view->setScriptPath($this->viewScriptPath);
        return $this->view->render($this->viewScript);
    }
}
